1. Field of the Invention
The present invention relates to the field of computer systems, and more particularly to a multiprocessor computer system having an input/output bridge coupled to devices external to the multiprocessor computer system.
2. Description of the Relevant Art
Personal computers (PCs) and other types of computer systems have been designed around a shared bus system for accessing memory. One or more processors and one or more input/output (I/O) devices may be coupled to the memory through the shared bus. The I/O devices may be coupled to the shared bus through an I/O bridge which manages the transfer of information between the shared bus and the I/O devices, while processors are typically coupled directly to the shared bus or coupled through a cache hierarchy to the shared bus.
Unfortunately, shared bus systems suffer from several drawbacks. For example, since there are multiple devices attached to the shared bus, the bus is typically operated at a relatively low frequency. The multiple attachments present a high capacitive load to a device driving a signal on the bus, and the multiple attach points present a relatively complicated transmission line model for high frequencies. Accordingly, the frequency remains low, and the bandwidth available of the shared bus is similarly relatively low. A low bandwidth presents a barrier to attaching additional devices to the shared bus, as performance may be limited by available bandwidth.
Another disadvantage of the shared bus system is a lack of scalability to larger numbers of devices. As mentioned above, the amount of bandwidth is fixed and may decrease if additional devices are added. Once the bandwidth requirements of the devices attached to the bus, either directly or indirectly, exceeds the available bandwidth of the bus, devices will frequently be stalled when attempting to access the bus. As a result, overall performance may be decreased.
One or more of the above problems may be addressed using a distributed memory system. A computer system employing a distributed memory system includes multiple nodes. Two or more of these nodes are connected to individual memories, respectively, and the nodes are interconnected using any suitable interconnect. For example, each node may be connected to each other node using dedicated lines. Alternatively, each node may connect to a fixed number of other nodes, and transactions between nodes may be routed from a first node to a second node to which the first node is not directly connected via one or more intervening nodes. A memory address space is assigned across the memories in each node.
Nodes may additionally include a processor. The processor typically includes a cache which stores cache blocks of data read from the memories. Furthermore, a node may include one or more caches external to the processors. Since the processors and/or nodes may be storing cache blocks accessed by other nodes, it is desirable to maintain coherency within the nodes.